﻿/**************************************************************************
创建时间:	2020/6/28
作	  者:	张存
邮 	  箱:	zhangcunliang@126.com

Copyright (c) zhcun.cn

描	述：
记	录：
***************************************************************************/
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using ZhCun.DBModel;

namespace ZhCun.WebUtils.DB
{
    class LoginStateBLL : BLLBase
    {
        /// <summary>
        /// 获取所有在有效期的登录用户信息
        /// </summary>
        public List<Sys_TokenCache> GetValidToken()
        {
            //清除过期的token
            DB.Delete<Sys_TokenCache>(s => s.ExpiresTime < DateTime.Now);
            var userList = DB.Query<Sys_TokenCache>(s => s.ExpiresTime > DateTime.Now).ToList(true);
            WriteLog($"载入有效Token数：{userList.Count}");
            return userList;
        }

        /// <summary>
        /// 刷新当前token的过期时间
        /// </summary>
        public bool RefreshToken(string token, DateTime? expiresTime = null)
        {
            Sys_TokenCache tokenObj = DB.Query<Sys_TokenCache>(s => s.LoginToken == token).ToEntity();
            
            if (tokenObj == null)
            {
                return false;
            }
            else
            {
                tokenObj.LastTime = GetNowTime();
                if (expiresTime == null)
                {
                    expiresTime = DateTime.Now.AddMinutes(tokenObj.ExpiresMinute);
                }
                tokenObj.ExpiresTime = expiresTime.Value;
                DB.Update(tokenObj);
                return true;
            }
        }

        public async void RefreshTokenAsync(string token, DateTime expiresTime)
        {
            await
            Task.Run(() => { return RefreshToken(token, expiresTime); });
        }
    }
}
